<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	<meta name="theme-color" content="#33474d">
	<title>Linux 命令- vim | 失落的乐章</title>
	<link rel="stylesheet" href="/css/style.css" />
	
      <link rel="alternate" href="/atom.xml" title="失落的乐章" type="application/atom+xml">
    
</head>

<body>

	<header class="header">
		<nav class="header__nav">
			
				<a href="/archives" class="header__link">Archive</a>
			
				<a href="/tags" class="header__link">Tags</a>
			
				<a href="/atom.xml" class="header__link">RSS</a>
			
		</nav>
		<h1 class="header__title"><a href="/">失落的乐章</a></h1>
		<h2 class="header__subtitle">技术面前，永远都是学生。</h2>
	</header>

	<main>
		<article>
	
		<h1>Linux 命令- vim</h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;所有的 Unix Like 系统都会内建 vi 文书编辑器，其他的文书编辑器则不一定存在。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;但是目前使用比较多的是 vim 编辑器。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;vim 具有程序编辑的能力，可以主动的以字体颜色辨别语法的正确性，方便设计。</p>
<h2 id="什么是vim"><a href="#什么是vim" class="headerlink" title="什么是vim"></a>什么是vim</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编辑及错误跳转等方便编程的功能特别丰富，在程序员中广泛使用。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;简单的来说，vi 是老式的字处理器，不公功能已经很齐全。vim 则可以说是程序开发者的一向很好用的工具。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;连<a href="http://www.vim.org" target="_blank" rel="external">vim官方网站</a>自己也说 vim 是一个程序开发工具而不是文字处理软件。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;vim 键盘图</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-vim/01.gif?raw=true" alt="vim键盘图"><figcaption class="figure__caption">vim键盘图</figcaption></figure></p>
<h2 id="vim的使用"><a href="#vim的使用" class="headerlink" title="vim的使用"></a>vim的使用</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;基本上 vim 分为三种模式：<strong>命令模式（Command mode、编辑模式）、输入模式（Insert mode）和底线命令模式（Last line mode、末行模式）</strong>。三种模式的作用分别是：</p>
<h3 id="命令模式"><a href="#命令模式" class="headerlink" title="命令模式"></a>命令模式</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;用户刚刚启动 vim ，便计入了命令模式。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;此状态下敲击键盘动作会被 vim 识别为命令，而非输入字符。比如此时按 i ，并不回输入一个字符，i 被当作了一个命令。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;以下是常用的几个命令：</p>
<ul>
<li><strong>i</strong> 在当前光标所在字符的前面，转为输入模式；</li>
<li><strong>a</strong> 在当前光标所在字符的后面，转为输入模式；</li>
<li><strong>o</strong> 在当前光标所在行的下方，新建一行，并转为输入模式；</li>
<li><strong>I</strong> 在当前光标表所在行的行首，转为输入模式；</li>
<li><strong>A</strong> 在当前光标所在行的行尾，转为输入模式；</li>
<li><strong>O</strong> 在当前光标所在行的上方，新建一行，并转为输入模式；</li>
<li><strong>x</strong> 删除当前光标所在出的字符；</li>
<li><strong>：</strong> 切换到底线命令模式，以在最底一行输入命令；</li>
<li><strong>ESC</strong> 从输入模式切换为命令模式，也可是底线命令模式切换为命令模式。</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;注：输入模式和底线命令模式之间不能直接切换。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;若想要编辑文本：启动 vim ，进入了命令模式，按下 i ，切换到输入模式。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;命令模式只有一些最基本的命令，因此仍要依靠底线命令模式输入更多命令。</p>
<h3 id="输入模式"><a href="#输入模式" class="headerlink" title="输入模式"></a>输入模式</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在命令模式下按下 <code>i</code> 就进入了输入模式。在输入模式中，可以使用以下按键：</p>
<ul>
<li><strong>字符按键以及Shift组合</strong>，输入字符</li>
<li><strong>ENTER</strong>，回车键，换行</li>
<li><strong>BACK SPACE</strong>，退格键，删除光标前一个字符</li>
<li><strong>DEL</strong>，删除键，删除光标后一个字符</li>
<li><strong>方向键</strong>，在文本中移动光标</li>
<li><strong>HOME/END</strong>,移动光标到行首/行尾</li>
<li><strong>Page Up/Page Down</strong>，上/下翻页</li>
<li><strong>Insert</strong>，切换光标为输入/替换模式，光标将变成竖线/下划线</li>
<li><strong>ESC</strong>，退出输入模式，切换到命令模式</li>
</ul>
<h3 id="底线命令模式"><a href="#底线命令模式" class="headerlink" title="底线命令模式"></a>底线命令模式</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在命令模式下按下 <code>:</code>（英文冒号）就进入了底线命令模式。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;底线命令模式可以输入单个或多个字符的命令，可用的命令非常多。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在底线命令模式中，基本的命令有：</p>
<ul>
<li><strong>q</strong>退出程序</li>
<li><strong>w</strong>保存文件</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;按ESC键可随时退出底线命令模式。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;可以将这三个模式想成下图来表示：</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-vim/02.png?raw=true" alt=""></figure></p>
<h2 id="vim-使用实例"><a href="#vim-使用实例" class="headerlink" title="vim 使用实例"></a>vim 使用实例</h2><h3 id="使用-vim-进入命令模式"><a href="#使用-vim-进入命令模式" class="headerlink" title="使用 vim 进入命令模式"></a>使用 vim 进入命令模式</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;使用 vim 来建立一个名为 test.txt 的文件</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># vim test.txt</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;直接输入 <strong>vim文件名</strong>就能进入 vim 的命令模式了。vim 后面一定要加文件名，不管该文件存在与否。</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-vim/03.jpg?raw=true" alt=""></figure></p>
<h3 id="按-i-进入输入模式（也称为编辑模式），开始编辑文字"><a href="#按-i-进入输入模式（也称为编辑模式），开始编辑文字" class="headerlink" title="按 i 进入输入模式（也称为编辑模式），开始编辑文字"></a>按 i 进入输入模式（也称为编辑模式），开始编辑文字</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在命令模式中，只要按下 i、o、a 等字符就可以进入输入模式了。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在编辑模式当中，可以发现在左下角状态栏中会出现 <code>-INSERT-</code>的字样，那就是可以输入任意字符的提示。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这个时候，键盘上除了<code>ESC</code>这个键之外，其他的按键都可以视作为一般的输入按钮了，所以可以进行任意的编辑。</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-vim/04.jpg?raw=true" alt=""></figure></p>
<h3 id="按下ESC按键回到一般模式"><a href="#按下ESC按键回到一般模式" class="headerlink" title="按下ESC按键回到一般模式"></a>按下ESC按键回到一般模式</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果编辑完毕，就按下<code>ESC</code>这个按键即可马上回到命令模式，这是左下角的 <code>-INSERT-</code>不见了</p>
<h3 id="在命令模式中，按下-wq保存后退出-vim"><a href="#在命令模式中，按下-wq保存后退出-vim" class="headerlink" title="在命令模式中，按下:wq保存后退出 vim"></a>在命令模式中，按下<code>:wq</code>保存后退出 vim</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;保存并退出的指令很简单，输入<code>:wq</code>即可保存并退出。</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-vim/05.jpg?raw=true" alt=""></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这样就成功创建了一个 test.txt文件。</p>
<h2 id="vim-按键说明"><a href="#vim-按键说明" class="headerlink" title="vim 按键说明"></a>vim 按键说明</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;除了以上简易范例的 i、ESC、:wq 之外，其实 vim 还有非常多的按键可以使用。</p>
<h3 id="第一部分：命令模式可用的光标移动、复制粘贴、搜索替换等"><a href="#第一部分：命令模式可用的光标移动、复制粘贴、搜索替换等" class="headerlink" title="第一部分：命令模式可用的光标移动、复制粘贴、搜索替换等"></a>第一部分：命令模式可用的光标移动、复制粘贴、搜索替换等</h3><p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-vim/06.jpg?raw=true" alt=""></figure></p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-vim/07.jpg?raw=true" alt=""></figure></p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-vim/08.jpg?raw=true" alt=""></figure></p>
<h3 id="第二部分：命令模式切换到编辑模式的可以用按键说明"><a href="#第二部分：命令模式切换到编辑模式的可以用按键说明" class="headerlink" title="第二部分：命令模式切换到编辑模式的可以用按键说明"></a>第二部分：命令模式切换到编辑模式的可以用按键说明</h3><p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-vim/09.jpg?raw=true" alt=""></figure></p>
<h3 id="第三部分：命令模式切换到末行指令模式的可以用按键说明"><a href="#第三部分：命令模式切换到末行指令模式的可以用按键说明" class="headerlink" title="第三部分：命令模式切换到末行指令模式的可以用按键说明"></a>第三部分：命令模式切换到末行指令模式的可以用按键说明</h3><p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E5%91%BD%E4%BB%A4-vim/10.jpg?raw=true" alt=""></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;特别注意，在 vim 中，数字是很有意义的！数字通常代表重复做几次的意思！也有可能是代表去到第几个的意思。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;举例来说，要删除50行，则是用<code>50dd</code>，数字加在动作之前；要向下移动20行，<code>20j</code>或是<code>20↓</code>即可。</p>

	

	
		<span class="different-posts"><a href="/2017/10/12/2. Linux 命令/72. Linux 命令-vim/" onclick="window.history.go(-1); return false;">⬅️ Go back </a></span>

	

</article>

	</main>

	<footer class="footer">
	<div class="footer-content">
		
	      <div class="footer__element">
	<p>Hi there, <br />welcome to my Blog glad you found it. Have a look around, will you?</p>
</div>

	    
	      <div class="footer__element">
	<h5>Check out</h5>
	<ul class="footer-links">
		<li class="footer-links__link"><a href="/archives">Archive</a></li>
		
		  <li class="footer-links__link"><a href="/atom.xml">RSS</a></li>
	    
		<li class="footer-links__link"><a href="/about">about page</a></li>
		<li class="footer-links__link"><a href="/tags">Tags</a></li>
		<li class="footer-links__link"><a href="/categories">Categories</a></li>
	</ul>
</div>

	    

		<div class="footer-credit">
			<span>© 2017 失落的乐章 | Powered by <a href="https://hexo.io/">Hexo</a> | Theme <a href="https://github.com/HoverBaum/meilidu-hexo">MeiliDu</a></span>
		</div>

	</div>


</footer>



</body>

</html>
